HTMLify
Implement k Queues in a Single Array.py
Views: 35 | Author: prakhardoneria
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | class kQueues: def __init__(self, n, k): self.n = n self.k = k self.arr = [0] * n self.front = [-1] * k self.rear = [-1] * k self.next = list(range(1, n)) + [-1] self.free_top = 0 def enqueue(self, x, i): if self.isFull(): return False insert_at = self.free_top self.free_top = self.next[insert_at] if self.isEmpty(i): self.front[i] = insert_at else: self.next[self.rear[i]] = insert_at self.next[insert_at] = -1 self.rear[i] = insert_at self.arr[insert_at] = x return True def dequeue(self, i): if self.isEmpty(i): return -1 front_idx = self.front[i] self.front[i] = self.next[front_idx] self.next[front_idx] = self.free_top self.free_top = front_idx return self.arr[front_idx] def isEmpty(self, i): return self.front[i] == -1 def isFull(self): return self.free_top == -1 |